package main

import (
	"encoding/json"
	"fmt"
)

type JsonTest struct {
	Name    string `json:"name,omitempty"`
	Age     int    `json:"age,omitempty"`
	Sex     int8   `json:"sex,omitempty"`
	Address string `json:"address,omitempty"`
}

//反序列化
func main() {
	//反序列化
	str := "{\"name\":\"tome\",\"age\":800,\"sex\":1,\"address\":\"北京市海淀区\"}"
	var jsonTest JsonTest

	err := json.Unmarshal([]byte(str), &jsonTest)
	if err != nil {
		fmt.Println(err)
	}

	//map反序列化
	str2 := "{\"age\":23,\"name\":\"tome\",\"sex\":23}"
	var b map[string]interface{}
	err = json.Unmarshal([]byte(str2), &b)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(b)

	str3 := "[null,null,null,null,null,null,null,null,null,null,{\"age\":\"age\",\"name\":\"name\"}" +
		",{\"address\":\"address\",\"array\":[\"beijing\",\"shanghai\"],\"sex\":\"sex\"}]"
	var c []map[string]interface{}
	err = json.Unmarshal([]byte(str3), &c)
	if err != nil {
		return
	}
	fmt.Println(c)

	fmt.Println(jsonTest)
}
